//1. 全局指令
//touch 指令配置项
/*
	使用形式: v-touch:[动态参数].tap.swipeleft[.swipeup]
	
	可使用的触摸类型:	'touchstart','touchend','swipeleft','swiperight','swipeup',
					'swipedown','drag','dragvertical','draghorizontal','tap','longtap'
	
	说明： 绑定函数时，第一个参数是元素本身 dom ,第二个是 binding.arg
*/
import directiveTouch from '@/mixin/directive/touch';
//clickout 指令配置项
/*
    使用形式: v-clickout
    
    说明： 绑定函数时，第一个参数是点击事件的 event
*/
import directiveClickout from '@/mixin/directive/clickout';

//2. 原型方法
//touch 插件
import touch from '@/mixin/prototype/touch.js';
//bus 组件消息传递 中介者模式
import bus from '@/mixin/prototype/bus';

//3. 全局方法 [ 字典 & 分页配置 ]
import * as method from '@/mixin/method';

//4. 全局过滤 [ 字典转换 & 添加前后缀 ]
import * as filter from '@/mixin/filter';

//5. 全局 data
import * as data from '@/mixin/data';

/*
	@Vue 插件注册
*/
let plugin = {};

plugin.install = function(Vue,options){
	/*
		@catalog
			//1. 全局指令
			//2. 实例方法
			//3. 全局方法
			//4. 全局过滤
	*/
	//1. 全局指令
	//[ 触摸指令 ]
	Vue.directive('touch',directiveTouch);
	//[ 点击非包含元素指令 ]
	Vue.directive('clickout',directiveClickout);
	
	//2. 原型方法
	//[ 触摸方法 ] - $touch
	Vue.prototype.$touch = touch;
	//[ vue-bus 组件消息传递 中介者模式] - emit/on/off
	Vue.prototype.$bus = bus;
	
	Vue.mixin({
	    
	//3. 全局方法	
		methods:{ ...method },
	//4. 全局过滤
		filters:{ ...filter },
    //5. 全局data
		data(){
           return { ...data }
        }
	});
}

export default plugin;